From: Paul Donald Date: Mon, 8 Dec 2025 14:02:38 +0000 (+0100) Subject: luci-base: add odhcp6c stats to luci ucode X-Git-Url: http://git.openwrt.org/%22https:/collectd.org//%22http:/www.crowdsec.net/%22/%22https:/collectd.org/%22http:/www.crowdsec.net/%22?a=commitdiff_plain;h=b6d43252f444a2fc1c854965d75543a7d9ce4bdd;p=project%2Fluci.git luci-base: add odhcp6c stats to luci ucode Provides odhcp6c statistics of DHCPv6 request and response traffic Signed-off-by: Paul Donald --- diff --git a/modules/luci-base/root/usr/share/rpcd/ucode/luci b/modules/luci-base/root/usr/share/rpcd/ucode/luci index c0ebc8cb27..55a55726bf 100644 --- a/modules/luci-base/root/usr/share/rpcd/ucode/luci +++ b/modules/luci-base/root/usr/share/rpcd/ucode/luci @@ -9,6 +9,7 @@ import { cursor } from 'uci'; import { init_list, init_index, init_enabled, init_action, conntrack_list, process_list } from 'luci.sys'; import { revision, branch } from 'luci.version'; import { statvfs, uname } from 'luci.core'; +import { connect } from 'ubus'; import timezones from 'luci.zoneinfo'; @@ -563,6 +564,7 @@ const methods = { } } }, + getRealtimeStats: { args: { mode: 'interface', device: 'eth0' }, call: function(request) { @@ -652,6 +654,31 @@ const methods = { return { result: ports }; } + }, + + getOdhcp6cStats: { + call: function() { + const ubus = connect(); + const devs = ubus.call('network.device', 'status'); + + if (!devs) + return false; + + const dev_stats = {}; + + for (let dev in devs) { + const m = ubus.call(`odhcp6c.${dev}`, 'get_statistics'); + + // not all interfaces are exposed unless odhcp6c runs on it + if (!m) + continue; + + push(dev_stats, dev); + dev_stats[dev] = m; + } + + return { result: dev_stats }; + } } };